<?php

define('IS_WIN',strstr( PHP_OS, 'WIN' ) ? 1 : 0 );

// 所有路径常量都必须以/ 结尾
defined('RES_PATH') or define('RES_PATH', APP_PATH.'Res/'); // 游戏资源目录
defined('DATA_PATH') or define('DATA_PATH', APP_PATH.'Data/'); // 游戏数据目录
defined('LOG_PATH') or define('LOG_PATH', RUNTIME_PATH.'Logs/'); // 游戏日志目录
defined('COMMON_PATH') or define('COMMON_PATH', MYGC_PATH.'Common/'); // 基础函数目录
defined('CONF_PATH') or define('CONF_PATH', MYGC_PATH.'Conf/');	// 配置目录
defined('EXTEND_PATH') or define('EXTEND_PATH', MYGC_PATH.'Extend/'); // 第三方类库目录
defined('LIB_PATH') or define('LIB_PATH', MYGC_PATH.'Lib/'); // 类库目录
defined('LIB_ACTION_PATH') or define('LIB_ACTION_PATH', LIB_PATH.'Action/'); // 类库目录
defined('LIB_CORE_PATH') or define('LIB_CORE_PATH', LIB_PATH.'Core/'); // 类库核心目录
defined('LIB_DATATPL_PATH') or define('LIB_DATATPL_PATH', LIB_PATH.'DataTpl/'); // 类库固定数据模板目录
defined('LIB_DB_PATH') or define('LIB_DB_PATH', LIB_PATH.'DB/'); // 类库数据库目录
defined('LIB_MODEL_PATH') or define('LIB_MODEL_PATH', LIB_PATH.'Model/'); // 类库模型目录

defined('LIB_TOOLS_PATH') or define('LIB_TOOLS_PATH', LIB_PATH.'Tools/'); // 工具目录


// 加载运行时所需文件
load_runtime_file();


// 加载运行时所需要的文件 并负责自动生成相关目录
function load_runtime_file() 
{
	// 加载基础函数库
	require COMMON_PATH.'common.php';
	
    // 加载运行所需文件
    $loadFileList = array();
    // 加载项目配置文件
    $configList = array(
        CONF_PATH.'config.php',
        CONF_PATH.'config_datapath.php',
        CONF_PATH.'config_protocol.php',
        CONF_PATH.'config_db.php',
    );
    $loadFileList = array_merge( $loadFileList, $configList );
    
	// 加载公共函数库
	$commonList = array(
        COMMON_PATH.'debug.php',
        COMMON_PATH.'functions.php',
        COMMON_PATH.'log.php',
    );
    $loadFileList = array_merge( $loadFileList, $commonList );
    
    // 读取核心文件列表
    $corelist = array(
        LIB_PATH.'Core/Core.php',
        //LIB_PATH.'Core/DataTemplate.php',
        //LIB_PATH.'Core/MygcException.class.php',
    );
    $loadFileList = array_merge( $loadFileList, $corelist );
    
    // 加载文件列表
    foreach ( $loadFileList as $key => $file ) {
        if( is_file( $file ) ) {
        	require_cache( $file );
        }
        else {
        	// exception
        }
    }

    // 检查运行所需目录
    check_runtime_catalog();
    
}

// 检查运行所需目录(Runtime) 如果不存在则自动创建
function check_runtime_catalog() 
{
    if( !is_dir( RUNTIME_PATH ) ) {
        mkdir( RUNTIME_PATH );
    }
    elseif( !is_writeable( RUNTIME_PATH ) ) {
        exit( '[ '.RUNTIME_PATH.'not write!' );
    }
    
    if( !is_dir( LOG_PATH ) )	mkdir( LOG_PATH, 0777 );    // 日志目录
    
    return true;
}


?>